
#LD = colorgcc -x c++
LD = g++
# Para activar los flags de debug
DEBUG = 1

FLAGS = -Wall -pedantic -pedantic-errors

ifdef DEBUG
	FLAGS+= -DDEBUG -ggdb -fno-inline -O0
endif

encabezados = $(wildcard *.hpp)
fuentes = $(wildcard *.cpp)
ejecutables = $(patsubst %.cpp,%,$(fuentes))
objetos = $(patsubst %.cpp,%.o,$(fuentes))
app_name = lanzador
test_dir = ${PWD}/
project = $(shell basename ${PWD})
deploy_dir = /root/czelada/$(project)/
common_headers = $(shell grep '\#include "..' <common.hpp | cut -d\" -f2 )
CXX = g++
MAKE = colormake
.PHONY: all clean kill deploy zip

all: $(ejecutables)

.cpp.o:
	$(LD) $(FLAGS) $(INCLUDES) -DBASE_NAME="\"$(test_dir)$(app_name)\"" -c $< -o $@

depend: dep

dep:
	$(LD) -M -- $(FLAGS) -- $(INCLUDES) -DBASE_NAME="\"$(test_dir)$(app_name)\"" $(ejecutables)

#$(OUT): api $(ALL_OBJS)
$(ejecutables): $(objetos)
	$(LD) $(FLAGS) -DBASE_NAME="\"$(test_dir)$(app_name)\"" $(OBJS) $@.o -o $@

#% : %.cpp $(common_headers)
#	$(LD) $(FLAGS) -DBASE_NAME="\"$(test_dir)$(app_name)\"" $< -o $@

deploy_dir:
	mkdir -p $(deploy_dir);
	
deploy: $(objetos) deploy_dir
	@for p in $(ejecutables); \
	do \
		echo "$(LD) $(FLAGS) -DBASE_NAME="\"$(deploy_dir)$(app_name)\"" $$p.cpp -o $$p"; \
		$(LD) $(FLAGS) -DBASE_NAME="\"$(deploy_dir)$(app_name)\"" $$p.cpp -o $$p; \
		mv $$p $(deploy_dir); \
	done; \

zip:
	tar  -cahf $(project).zip --exclude=".svn" --exclude="*.zip" --exclude="*.o" *.?pp Makefile ipc utils

# Objetivo para llamar del raiz del repositorio y armar todos los zips y moverlos al directorio raiz.
zip_all: clean_all
	@rsync -aCL tp1.* czelada/; \
	tar -cahf czelada0101v0.zip czelada/; \
	tar -cahf czelada0101v0.tgz czelada/; \

build_all:
	@for directorio in `ls -d tp1*`; \
	do \
		$(MAKE) -C "$$directorio"; \
	done; \
	echo "\033[31;1mADVERTENCIA: ESTE COMANDO ES PARA COMPROBAR QUE TODO SE PUEDE COMPILAR, NO USAR LOS ARCHIVOS GENERADOS.\033[0;m"; \

clean_all:
	@for directorio in `ls -d tp1*`; \
	do \
		$(MAKE) -C "$$directorio" clean; \
	done \

kill:
	@for p in $(ejecutables); \
	do \
		for e in `pidof $$p`; \
		do \
			echo "Matando el proceso $$e ($$p)"; \
			kill -9 $$e; \
		done \
	done \

undeploy:
	@for p in $(ejecutables); \
	do \
		rm -fv $(deploy_dir)/$$p; \
	done; \
	rmdir $(deploy_dir)

clean:
	rm -fv $(ejecutables) $(objetos) tp1*.zip
